package business.global.room.task;

import business.global.room.base.AbsBaseRoom;
import cenum.room.RoomState;
import cenum.room.TrusteeshipState;
import com.ddm.server.common.utils.CommTime;

/**
 * 机器人房间线程
 *
 * @author Administrator
 */
public class RobotTaskRoom2 extends AbsBaseTaskRoom {
    // 检查房间内是否没人
    private int noOneTime = CommTime.nowSecond();

    public RobotTaskRoom2(AbsBaseRoom room, long timer) {
        super(room, timer);
    }

    @Override
    public void startTimer(long timer) {
    }

    public boolean isAtOnceStart() {
        return getRoom().atOnceStartGame();
    }

    @Override
    /**
     * 每200ms更新1次
     *
     * @return
     */
    protected boolean update() {
        boolean isClosed = false;

        return isClosed;
    }


    /**
     * 房间开始后生存时间，过期自动解散 有效期3小时
     */
    @Override
    public final int getRoomLifeTime() {
        return 2100;
    }

    /**
     * 房间生存时间，过期自动解散 有效期1小时
     */
    @Override
    public final int getRoomSurvivalTime() {
        return 300;
    }

    @Override
    protected void clearTask() {

    }

    /**
     * 开始游戏
     */
    private void startGame(int sec) {
        // 当前线程时间 >= 开始时间 + 2(秒)
        if (this.getStartSec() > 0 && sec >= this.getStartSec() + 2) {
            // 游戏开始
            this.setRoomState(RoomState.Playing);
            return;
        }
        // 检查所有玩家是否存在
        if (this.getRoom().getRoomPosMgr().isAllReady()) {
            // 检查是否设置开始时间
            if (this.getStartSec() <= 0) {
                // 开始时间
                this.setStartSec(sec);
            }
        } else {
            // 重置开始时间
            this.setStartSec(0);
        }
    }

    /**
     * 立即开始游戏
     */
    private void atOnceStartGame() {
        if (this.getRoom().getRoomPosMgr().isAllReady()) {
            // 检查是否设置开始时间
            this.setRoomState(RoomState.Playing);
            return;
        }
    }

    /**
     * 检查自动准备游戏超时
     */
    @Override
    protected void autoReadyGameOvertime() {
        // 设置所有玩家自动准备
        this.getRoom().getRoomPosMgr().checkAllAutoReadyGameOvertime();
    }

}
